# coding=utf-8

"""封装"""


# 如果在类内定义时使用了__,则说明该变量不希望被外部使用或者修改
class Student:
    def __init__(self, name, age):
        self._Student__age = None
        self.name = name
        self.__age = age

    def show(self):
        print(self.name, self.__age)

    @property
    def Student__age(self):
        return self._Student__age


stu = Student('张三', 20)
stu.show()  # 这个是通过调用类内部的函数来使用__age
print(stu.name)
# print(stu.age)#不可打印，会报错
print(stu.Student__age)  # 这个还是可以调用，但是不太建议使用，因为class已经使用了__来避免外部调用

"""继承"""


# 注意新的类在继承了已经出现过的类时，初始化自己的类时也要初始化自己所继承的类的
class A(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def info(self):
        print(self.name, self.age)


class B(A):
    def __init__(self, name, age, score):
        super().__init__(name, age)
        self.score = score


class C(A):
    def __init__(self, name, age, no):
        super().__init__(name, age)
        self.no = no

stu1=B('张三',22,22)
stu2=C('李四',22,66)
stu1.info()
stu2.info()